#include <vector>
#include <iostream>
#include <string>

class Node
{
private:
	Node *parent;
	std::vector<Node*> *children;
	std::vector<std::vector<int>*> *state=NULL;
	char direction = NULL;
	int level;
	
public:
	int priority;
	Node(Node *parent, std::vector<std::vector<int>*> *state = NULL);
	Node* getParent();
	std::vector<Node*>* getChildren();
	std::vector<std::vector<int>*>* getState();
	void setState(std::vector<std::vector<int>*> *state);
	bool changeState(char direction);
	void showState();
	bool createChild(char direction);
	char getDirection();
	int	 getLevel();
	int* getPosition(int value);
	~Node();
	
};